﻿// Decompiled with JetBrains decompiler
// Type: UnityEngine.RenderParams
// Assembly: UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: E6AE6B5A-2752-4B07-9528-C8B77C62CE79
// Assembly location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll
// XML documentation location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.xml

using UnityEngine.Rendering;

#nullable disable
namespace UnityEngine
{
  /// <summary>
  ///   <para>Rendering parameters used by various rendering functions.</para>
  /// </summary>
  /// <summary>
  ///   <para>Constructor.</para>
  /// </summary>
  /// <param name="mat"></param>
  public struct RenderParams(Material mat)
  {
    /// <summary>
    ///   <para>Layer used for rendering. to use.</para>
    /// </summary>
    public int layer { get; set; } = 0;

    /// <summary>
    ///   <para>Renderer layer mask used for rendering.</para>
    /// </summary>
    public uint renderingLayerMask { get; set; } = GraphicsSettings.defaultRenderingLayerMask;

    /// <summary>
    ///   <para>Renderer priority.</para>
    /// </summary>
    public int rendererPriority { get; set; } = 0;

    /// <summary>
    ///   <para>Defines world space bounds for the geometry. Used to cull and sort the rendered geometry.</para>
    /// </summary>
    public Bounds worldBounds { get; set; } = new Bounds(Vector3.zero, Vector3.zero);

    /// <summary>
    ///   <para>The camera used for rendering. If set to null (default) renders for all cameras.</para>
    /// </summary>
    public Camera camera { get; set; } = (Camera) null;

    /// <summary>
    ///   <para>Motion vector mode used for rendering.</para>
    /// </summary>
    public MotionVectorGenerationMode motionVectorMode { get; set; } = MotionVectorGenerationMode.Camera;

    /// <summary>
    ///   <para>The type of reflection probe used for rendering.</para>
    /// </summary>
    public ReflectionProbeUsage reflectionProbeUsage { get; set; } = ReflectionProbeUsage.Off;

    /// <summary>
    ///   <para>Material used for rendering.</para>
    /// </summary>
    public Material material { get; set; } = mat;

    /// <summary>
    ///   <para>Material properties used for rendering.</para>
    /// </summary>
    public MaterialPropertyBlock matProps { get; set; } = (MaterialPropertyBlock) null;

    /// <summary>
    ///   <para>Describes if geometry should cast shadows.</para>
    /// </summary>
    public ShadowCastingMode shadowCastingMode { get; set; } = ShadowCastingMode.Off;

    /// <summary>
    ///   <para>Descripes if the rendered geometry should receive shadows.</para>
    /// </summary>
    public bool receiveShadows { get; set; } = false;

    /// <summary>
    ///   <para>The type of light probe usage.</para>
    /// </summary>
    public LightProbeUsage lightProbeUsage { get; set; } = LightProbeUsage.Off;

    /// <summary>
    ///   <para>Light Probe Proxy Volume (LPPV) used for rendering.</para>
    /// </summary>
    public LightProbeProxyVolume lightProbeProxyVolume { get; set; } = (LightProbeProxyVolume) null;
  }
}
